#ifndef BASICTOWER
#define BASICTOWER

#include "Entity.h"

class Sound3D;
class TargetMediator;
class EntityManager;
class EntityFactory;
class BasicTower : public Entity
{
public:
	BasicTower(const EEntityType& entity_type, EntityFactory* entity_factory, EntityManager* entity_manager, TargetMediator* target_mediator);
	virtual ~BasicTower(void);

	virtual void Init(SceneObject* scene_object, Grid* grid);
	virtual void Update(float deltatime);

	void SetShootTime(float shoot_time);
	void SetScanCollider(ScanCollider* scan_collider) { m_scan_collider = scan_collider; };
	ScanCollider* GetScanCollider() { return m_scan_collider; };

protected:
	virtual void Shoot(Entity* target);
	TargetMediator* m_target_mediator;
	ScanCollider* m_scan_collider;

	EntityFactory* m_entity_factory;
	EntityManager* m_entity_manager;

	float m_shoot_time;
	float m_curr_shoot_time;

	Sound3D* m_shoot_sound;
};

#endif //BASICTOWER